const sessionCache = {
  set(key, value) {
    if (!sessionStorage) return;
    if (key != null && value != null) {
      sessionStorage.setItem(key, value);
    }
  },

  get(key) {
    if (!sessionStorage) return null;
    if (key == null) return null;
    return sessionStorage.getItem(key);
  },

  setJSON(key, jsonValue) {
    if (jsonValue != null) {
      this.set(key, JSON.stringify(jsonValue));
    }
  },

  getJSON(key) {
    const value = this.get(key);
    if (value != null) {
      return JSON.parse(value);
    }
  },

  remove(key) {
    sessionStorage.removeItem(key);
  },
};

const localCache = {
  set(key, value) {
    if (!localStorage) return;
    if (key != null && value != null) {
      localStorage.setItem(key, value);
    }
  },

  get(key) {
    if (!localStorage) return null;
    if (key == null) return null;
    return localStorage.getItem(key);
  },

  setJSON(key, jsonValue) {
    if (jsonValue != null) {
      this.set(key, JSON.stringify(jsonValue));
    }
  },

  getJSON(key) {
    const value = this.get(key);
    if (value != null) {
      return JSON.parse(value);
    }
  },

  remove(key) {
    localStorage.removeItem(key);
  },
};

export default {
  // 会话级缓存
  session: sessionCache,
  // 本地缓存
  local: localCache,
};
